package models

import "time"

// SystemSettings represents general system configuration
type SystemSettings struct {
	ID         string    `bson:"_id,omitempty" json:"id"`
	SystemName string    `bson:"systemName" json:"systemName"`
	Language   string    `bson:"language" json:"language"`
	Theme      string    `bson:"theme" json:"theme"`
	UpdatedAt  time.Time `bson:"updatedAt" json:"updatedAt"`
	UpdatedBy  string    `bson:"updatedBy" json:"updatedBy"`
}

// NotificationSettings represents notification preferences
type NotificationSettings struct {
	ID                   string    `bson:"_id,omitempty" json:"id"`
	UserID               string    `bson:"userId" json:"userId"`
	EmailNotifications   bool      `bson:"emailNotifications" json:"emailNotifications"`
	AlertNotifications   bool      `bson:"alertNotifications" json:"alertNotifications"`
	TicketNotifications  bool      `bson:"ticketNotifications" json:"ticketNotifications"`
	EmailAddress         string    `bson:"emailAddress,omitempty" json:"emailAddress,omitempty"`
	SlackWebhook         string    `bson:"slackWebhook,omitempty" json:"slackWebhook,omitempty"`
	UpdatedAt            time.Time `bson:"updatedAt" json:"updatedAt"`
}

// Integration represents a third-party integration configuration
type Integration struct {
	ID          string                 `bson:"_id,omitempty" json:"id"`
	Name        string                 `bson:"name" json:"name"`
	Type        string                 `bson:"type" json:"type"` // slack, pagerduty, jira
	Description string                 `bson:"description" json:"description"`
	Enabled     bool                   `bson:"enabled" json:"enabled"`
	Config      map[string]interface{} `bson:"config" json:"config"`
	CreatedAt   time.Time              `bson:"createdAt" json:"createdAt"`
	UpdatedAt   time.Time              `bson:"updatedAt" json:"updatedAt"`
}

// UserPreference represents user-specific preferences
type UserPreference struct {
	ID               string    `bson:"_id,omitempty" json:"id"`
	UserID           string    `bson:"userId" json:"userId"`
	DashboardLayout  string    `bson:"dashboardLayout,omitempty" json:"dashboardLayout,omitempty"`
	DefaultView      string    `bson:"defaultView,omitempty" json:"defaultView,omitempty"`
	ItemsPerPage     int       `bson:"itemsPerPage" json:"itemsPerPage"`
	Timezone         string    `bson:"timezone" json:"timezone"`
	DateFormat       string    `bson:"dateFormat" json:"dateFormat"`
	UpdatedAt        time.Time `bson:"updatedAt" json:"updatedAt"`
}
